home *** CD-ROM | disk | FTP | other *** search
/ Windows Expert / Windows Expert.iso / windownt / perlnt.zip / eg / NTCVT.CMD < prev    next >
OS/2 REXX Batch file  |  1993-07-25  |  1KB  |  67 lines

  1. @rem = '-*- Perl -*-';
  2. @rem = '
  3. @echo off
  4. perl -S %0.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9
  5. goto endofperl
  6. ';
  7. #
  8. # ntcvt.cmd - convert a unix perl script to an NT perl script
  9. #
  10.  
  11. &usage if $#ARGV < 0;
  12.  
  13. $infile = $ARGV[0];
  14.  
  15. open (I, $infile) || die "Can't open $infile for reading: $!";
  16. @lines = <I>;
  17. close I;
  18.  
  19. if ($lines[0] =~ /^#!.*perl/) {
  20.     if ($lines[0] =~ /^#!.*perl\s+\S+$/) {
  21.     ($switches = $lines[0]) =~ s/^#!.*perl\s+-(\S+).*$/-$1/;
  22.     chop ($switches);
  23.     }
  24.     $switches = "-S" if $switches eq "";
  25.     shift (@lines);
  26. }
  27.  
  28. @header = ('@rem = \'-*- Perl -*-\';',
  29.        '@rem = \'',
  30.        '@echo off',
  31.        "perl $switches %0.cmd %1 %2 %3 %4 %5 %6 %7 %8 %9",
  32.        'goto endofperl',
  33.        '\';');
  34.  
  35. @path = split(m;[\\/];, $infile);
  36.  
  37. $file = $path[$#path];
  38.  
  39. $newfile = &makecmd($file, join('/', @path[0..$#path-1]));
  40.  
  41. open (O, ">$newfile") || die "Can't open $newfile for output: $!";
  42. print O join("\n", @header);
  43. print O @lines;
  44. print O "__END__\n:endofperl\n";
  45. close O;
  46.  
  47. print "$infile converted to $newfile\n";
  48.  
  49. sub makecmd {
  50.     local($file, $path) = @_;
  51.     local($newfile) = $file;
  52.  
  53.     #
  54.     # translate any dots in the name to '_'
  55.     #
  56.  
  57.     $newfile =~ tr/\./_/;
  58.     $newfile = substr($newfile, 0, 8);
  59.     while( -e "$path/$newfile.cmd") {
  60.     substr($newfile, -1, 1) = "~";
  61.     }
  62.     "$newfile.cmd";
  63. }
  64.  
  65. __END__
  66. :endofperl
  67.